/*
ONEGAME
Copyright (C) 2009  Pablo Caballero

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package one.project;

/**
 * Abstract project
 * @author Pablo Caballero
 * @version 1.0 17-jun-2009
 */
public abstract class AbstractProject implements IProject {

	private enum PROJECT_SECTIONS {

		SYSTEM_DATA, SYSTEM_MAPS
	}
	protected ISystemData systemData = new DefaultSystemData();
	protected ILayerManager systemMaps = new DefaultLayerManager();

	public ISystemData getSystemData() {
		return systemData;
	}

	public ILayerManager getSystemMaps() {
		return systemMaps;
	}

	/**
	 * Returns the name of the project
	 * @return The name of the project
	 * @see #getProjectName() 
	 */
	@Override
	public String toString() {
		return getSystemData().getProjectName();
	}

	public Object getChild(int index) {
		PROJECT_SECTIONS section = PROJECT_SECTIONS.values()[index];
		switch (section) {
			case SYSTEM_DATA:
				return getSystemData();
			case SYSTEM_MAPS:
				return getSystemMaps();
			default:
				return null;
		}
	}

	public int getChildCount() {
		return PROJECT_SECTIONS.values().length;
	}

	public boolean isLeaf() {
		return false;
	}
}
